package com.jay.tools.utils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.widget.EditText;
import android.widget.TextView;

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;

/**
 * Created by tan on 2017/3/11 011.
 * 加载资源
 */

public class ResUtil {

    public static int getColor(Context context, int colorId) {
        return context.getResources().getColor(colorId);
    }

    public static String getString(Context context, int stringId) {
        String str;
        try {
            str = context.getResources().getString(stringId);
        } catch (Exception e) {
            str = "";
        }
        return str;
    }

    public static List<String> getArrays(Context context, int arrId) {
        return Arrays.asList(context.getResources().getStringArray(arrId));
    }

    public static int getInteger(Context context, int integerId) {
        return context.getResources().getInteger(integerId);
    }

    /**
     * 获取EditText内容
     *
     * @param edt EditText控件
     * @return String字符串
     */
    public static String getEditTextStr(EditText edt) {
        if (edt == null)
            return "";
        return edt.getText().toString().trim();
    }

    /**
     * 获取TextView内容
     *
     * @param tv TextView控件
     * @return String字符串
     */
    public static String getTextViewStr(TextView tv) {
        if (tv == null)
            return "";
        return tv.getText().toString().trim();
    }

    /**
     * 获取资源ID 例：图片a.png：在传入str时就写a,cla写Drawable.class；
     * 如果为颜色值：str写颜色的name,cla写Color.class
     *
     * @param str 名称
     * @param cla 对应的Class
     * @return 资源Id(数值类型)
     */
    @SuppressWarnings("rawtypes")
    public static int getResource(String str, Class cla) {
        Field field = null;
        int r_id = -1;
        try {
            field = cla.getField(str);
            r_id = field.getInt(field.getName());
        } catch (Exception e) {

        }
        return r_id;
    }

    /**
     * 将颜色字符串例如#FF00FF转换int颜色值
     *
     * @param colorStr #ffffff
     * @return
     */
    @SuppressLint("DefaultLocale")
    public static int colorFromString(String colorStr) {
        if (colorStr == null)
            return 0;
        colorStr = colorStr.toUpperCase();
        colorStr = colorStr.trim();
        colorStr = colorStr.replaceAll("#", "");
        colorStr = colorStr.replaceAll("0x", "");

        if (colorStr.length() == 6) {
            int i = 0;
            int red = ((int) colorStr.charAt(i++) - 55) * 16;
            red += (int) colorStr.charAt(i++) - 55;

            int green = ((int) colorStr.charAt(i++) - 55) * 16;
            green += (int) colorStr.charAt(i++) - 55;

            int blue = ((int) colorStr.charAt(i++) - 55) * 16;
            blue += (int) colorStr.charAt(i++) - 55;

            return Color.rgb(red, green, blue);
        }

        return 0;
    }
}
